#ifndef SDRAGON_BUTTON_H_INCLUDED
#define SDRAGON_BUTTON_H_INCLUDED

#include "SDragon_GeneralIncludes.h"
#include "SDR_Window.h"
#include "SDR_Button.h"

#include "SDragon_Tools.h"
#include "SDragon_Surface.h"
#include "SDragon_Event.h"

SDR_Button * DLL_EXPORT SDR_Button_new(SDR_Surface * buttonOut, SDR_Surface* buttonOver, SDR_Surface * buttonDown);
SDR_Button * DLL_EXPORT SDR_Button_newFriend(SDR_Button * button);
uint8_t DLL_EXPORT SDR_Button_changeFriend(SDR_Button * button, SDR_Button * theFriend);
uint8_t DLL_EXPORT SDR_Button_isFriendOf(SDR_Button * button, SDR_Button * theFriend);

uint8_t DLL_EXPORT SDR_Button_setPosition(SDR_Button * button, int16_t x, int16_t y);
uint8_t DLL_EXPORT SDR_Button_setRect(SDR_Button * button, int16_t x, int16_t y, uint16_t w, uint16_t h);
uint8_t DLL_EXPORT SDR_Button_removeRect(SDR_Button * button);
uint8_t DLL_EXPORT SDR_Button_setAlpha(SDR_Button * button, uint8_t alpha);
uint8_t DLL_EXPORT SDR_Button_show(SDR_Button * button);
uint8_t DLL_EXPORT SDR_Button_hide(SDR_Button * button);
uint8_t DLL_EXPORT SDR_Button_setSelectable(SDR_Button * button, uint8_t selectable);
uint8_t DLL_EXPORT SDR_Button_setStatus(SDR_Window * window, SDR_Button * button, SDR_ButtonStatus status);

uint8_t DLL_EXPORT SDR_Button_blit(SDR_Window * window, SDR_Button * button);

uint8_t DLL_EXPORT SDR_ButtonList_update(SDR_Window * window, SDL_Event * event);

void DLL_EXPORT SDR_Button_free(SDR_Button * button);

#endif // SDRAGON_BUTTON_H_INCLUDED
